#pragma once

#include <cstdint>

class CType;

struct SDecoratedType
{
    SDecoratedType() = default;

    SDecoratedType(CType* InBasicType)
        :BasicType(InBasicType)
    {

    }

    CType* BasicType=nullptr;

    //use a place holder or a instancable type
    //override the generic argument
    TVector<CType*> OverrideGenericTypes;

    bool operator==(const SDecoratedType& Other) const
    {
        return BasicType == Other.BasicType;
    }

    uint64_t GetHashCode() const
    {
        return (uint64_t)(BasicType);
    }   
};